package cn.kgc.springday06.aop;

import org.aspectj.lang.ProceedingJoinPoint;

/**
 * @Author: 课工场
 * @Version: v1.0  2023/6/16
 * @Description: 通知类
 */
public class Advice {

    // 前置通知
    public void  before(){
        System.out.println("=========上课时间到了===========");
    }


    // 后置通知
    public void  afterReturn(){
        System.out.println("=========下课时间到了===========");
    }

    // 最终通知
    public void  after(){
        System.out.println("=========最终通知===========");
    }


    // 异常通知
    public void  afterThrowing(){
        System.out.println("=========异常通知===========");
    }


    // 环绕通知
    public  Object around(ProceedingJoinPoint proceedingJoinPoint){

        // 分界点  目标方法的执行点
        try {
            System.out.println("=========上课时间到了===========");
            Object proceed = proceedingJoinPoint.proceed();
            System.out.println("=========下课时间到了===========");

            return proceed;

        } catch (Throwable throwable) {
            throwable.printStackTrace();
        }
        return null;
    }


}
